home *** CD-ROM | disk | FTP | other *** search
/ Aminet 31 / Aminet 31 (1999)(Schatztruhe)[!][Jun 1999].iso / Aminet / util / gnu / xpdf-0.8-src.lha / xpdf-0.8-src / ltk / LTKWindow.h < prev    next >
C/C++ Source or Header  |  1998-11-28  |  6KB  |  185 lines

  1. //========================================================================
  2. //
  3. // LTKWindow.h
  4. //
  5. // Copyright 1996 Derek B. Noonburg
  6. //
  7. //========================================================================
  8.  
  9. #ifndef LTKWINDOW_H
  10. #define LTKWINDOW_H
  11.  
  12. #ifdef __GNUC__
  13. #pragma interface
  14. #endif
  15.  
  16. #include <stddef.h>
  17. #include <X11/Xlib.h>
  18. #include "gtypes.h"
  19. #include "GString.h"
  20.  
  21. class LTKApp;
  22. class LTKWidget;
  23. class LTKBox;
  24. class LTKWindow;
  25. class LTKMenu;
  26.  
  27. //------------------------------------------------------------------------
  28. // callback types
  29. //------------------------------------------------------------------------
  30.  
  31. // Key press
  32. typedef void (*LTKWindowKeyCbk)(LTKWindow *win, KeySym key, Guint modifiers,
  33.                 char *s, int n);
  34.  
  35. // Property change
  36. typedef void (*LTKWindowPropCbk)(LTKWindow *win, Atom atom);
  37.  
  38. // Layout window
  39. typedef void (*LTKWindowLayoutCbk)(LTKWindow *win);
  40.  
  41. //------------------------------------------------------------------------
  42. // LTKWindow
  43. //------------------------------------------------------------------------
  44.  
  45. class LTKWindow {
  46. public:
  47.  
  48.   //---------- constructor and destructor ----------
  49.  
  50.   LTKWindow(LTKApp *app1, GBool dialog1, char *title,
  51.         char **iconData1, char *defaultWidgetName,
  52.         LTKBox *box1);
  53.  
  54.   ~LTKWindow();
  55.  
  56.   //---------- access ----------
  57.  
  58.   LTKApp *getApp() { return app; }
  59.   int getWidth() { return width; }
  60.   int getHeight() { return height; }
  61.   GString *getSelection() { return selection; }
  62.   Display *getDisplay() { return display; }
  63.   int getScreenNum() { return screenNum; }
  64.   Window getXWindow() { return xwin; }
  65.   Colormap getColormap() { return colormap; }
  66.   unsigned long getFgColor() { return fgColor; }
  67.   unsigned long getBgColor() { return bgColor; }
  68.   GC getFgGC() { return fgGC; }
  69.   GC getBgGC() { return bgGC; }
  70.   GC getBrightGC() { return brightGC; }
  71.   GC getDarkGC() { return darkGC; }
  72.   GC getXorGC() { return xorGC; }
  73.   XFontStruct *getXFontStruct() { return fontStruct; }
  74.   LTKWindow *getNext() { return next; }
  75.   LTKWindow *setNext(LTKWindow *next1) { return next = next1; }
  76.   LTKWidget *addWidget(LTKWidget *widget);
  77.   LTKWidget *delWidget(LTKWidget *widget);
  78.   LTKWidget *findWidget(char *name);
  79.  
  80.   //---------- special access ----------
  81.  
  82.   void setInstallCmap(GBool inst) { installCmap = inst; }
  83.   void setMenu(LTKMenu *menu1) { menu = menu1; }
  84.   void setKeyCbk(LTKWindowKeyCbk cbk) { keyCbk = cbk; }
  85.   void setPropChangeCbk(LTKWindowPropCbk cbk);
  86.   void setLayoutCbk(LTKWindowLayoutCbk cbk) { layoutCbk = cbk; }
  87.   void setKeyWidget(LTKWidget *widget) { keyWidget = widget; }
  88.   LTKWidget *getKeyWidget() { return keyWidget; }
  89.   LTKWidget *getSelectionWidget() { return selectionWidget; }
  90.   LTKWidget *getPasteWidget() { return pasteWidget; }
  91.   LTKWindow *getOverWin() { return overWin; }
  92.  
  93.   //---------- layout ----------
  94.  
  95.   GBool checkFills(char **err);
  96.   void layout(int x, int y, int width1, int height1);
  97.   void layoutDialog(LTKWindow *overWin1, int width1, int height1);
  98.   void map();
  99.  
  100.   //---------- drawing ----------
  101.  
  102.   void redraw();
  103.   void redrawBackground();
  104.  
  105.   //---------- selection ----------
  106.  
  107.   void setSelection(LTKWidget *widget, GString *text);
  108.   void requestPaste(LTKWidget *widget);
  109.  
  110.   //---------- callbacks and event handlers ----------
  111.  
  112.   void postMenu(int mx, int my);
  113.   void keyPress(KeySym key, Guint modifiers, char *s, int n);
  114.   void propChange(Atom atom);
  115.  
  116.   //---------- utility functions ----------
  117.  
  118.   // Create a new GC with specified parameters.
  119.   GC makeGC(unsigned long color, int lineWidth, int lineStyle);
  120.  
  121.   // Set the window title.
  122.   void setTitle(GString *title1);
  123.  
  124.   // Set the cursor to one listed X11/cursorfont.h.
  125.   void setCursor(Guint cursor);
  126.  
  127.   // Set the cursor to the default.
  128.   void setDefaultCursor();
  129.  
  130.   // If busy is true, set the cursor to the "busy" cursor; otherwise
  131.   // set it back to the previous cursor.  Calls to this function nest.
  132.   void setBusyCursor(GBool busy);
  133.  
  134.   // Raise this window, deiconifying it if necessary.  Assumes map()
  135.   // has already been called.
  136.   void raise();
  137.  
  138. protected:
  139.  
  140.   LTKApp *app;            // application
  141.   GBool dialog;            // dialog window?
  142.   GString *title;        // window title
  143.   char **iconData;        // data for icon pixmap
  144.   int width, height;        // size of window
  145.   LTKWidget *widgets;        // list of widgets (except boxes)
  146.   LTKBox *box;            // contents of window
  147.  
  148.   GString *selection;        // selection text
  149.  
  150.   Guint savedCursor;        // cursor saved by setBusyCursor()
  151.   int busyCursorNest;        // nesting level for setBusyCursor()
  152.  
  153.   LTKMenu *menu;        // the menu
  154.  
  155.   LTKWindowKeyCbk keyCbk;    // key press callback
  156.   LTKWindowPropCbk propCbk;    // property change callback
  157.   LTKWindowLayoutCbk layoutCbk;    // layout window callback
  158.  
  159.   LTKWidget *defaultWidget;    // default widget (activated by return key)
  160.   LTKWidget *keyWidget;        // current keyboard input focus
  161.   LTKWidget *selectionWidget;    // widget which owns selection
  162.   LTKWidget *pasteWidget;    // widget which gets next paste
  163.  
  164.   LTKWindow *overWin;        // if window is a dialog, this is the
  165.                 //   window it's placed over
  166.  
  167.   Display *display;        // X display
  168.   int screenNum;        // X screen number
  169.   Window xwin;            // X window ID
  170.   long eventMask;        // current event mask
  171.   GBool installCmap;        // install a private colormap
  172.   Colormap colormap;        // the colormap
  173.   unsigned long fgColor,    // foreground pixel number
  174.                 bgColor;    // background pixel number
  175.   GC fgGC;            // X GC for foreground color
  176.   GC bgGC;            // X GC for background color
  177.   GC brightGC, darkGC;        // X GCs for shadow colors
  178.   GC xorGC;            // X GC for cursors, highlighting, etc.
  179.   XFontStruct *fontStruct;    // X font info
  180.  
  181.   LTKWindow *next;        // LTKApp keeps a list of windows
  182. };
  183.  
  184. #endif
  185.